package com.lyh.notes.service;

import com.lyh.notes.model.base.ApiResponse;
import com.lyh.notes.model.base.EmptyVO;
import com.lyh.notes.model.dto.message.MessageQueryParams;
import com.lyh.notes.model.vo.message.MessageVO;
import com.lyh.notes.model.vo.message.UnreadCountByType;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 消息服务接口
 */
@Transactional
public interface MessageService {
    /**
     * 创建消息
     *
     */
    ApiResponse<Integer> createMessage(Long receiverId, Long senderId, String type, Integer targetId, String content);

    /**
     * 获取消息列表
     */
    ApiResponse<List<MessageVO>> getMessages(MessageQueryParams params);

    /**
     * 标记消息为已读
     *
     */
    ApiResponse<EmptyVO> markAsRead(Integer messageId);

    /**
     * 标记所有消息为已读
     *
     */
    ApiResponse<EmptyVO> markAllAsRead();

    /**
     * 删除消息
     *
     */
    ApiResponse<EmptyVO> deleteMessage(Integer messageId);

    /**
     * 获取未读消息数量
     *
     */
    ApiResponse<Integer> getUnreadCount();

    /**
     * 获取各类型未读消息数量
     *
     */
    ApiResponse<List<UnreadCountByType>> getUnreadCountByType();
} 